3

TypeScript-Basic

typescript之旅

1.TypeScript-Basic
2.TypeScript interface
3.Typescript-module(1)
4.TypeScript Modules(2)
5.Typescript tsconfig
6.TypeScript Functions
7.Typescript Class

基础

  • 今天讲的很简单,是一些很基础的东西,但它们会让你对typescript眼前一亮

类型

  • boolean

  • number

  • string

  • array

  • tuple+联合类型(额,这个很难懂,后面有解释)

  • enum

  • any

  • void

OK,如何声明一个变量的类型呢 ?
屁股后面加:

  • let isDone:boolean = false;

  • let decLiteral: number = 6;

  • let name: string = "bob";

  • let list: number[] = [1, 2, 3];

  • let x: [string, number];

  • enum Color {Red, Green, Blue};let c: Color = Color.Green;

  • let notSure: any = 4;

问题

  • 关于强制类型转换的问题
    如果你使用过c语言,那你一定知道,两个兼容类型的转换需要使用

char* a = (char*)10000;,那typescript中any兼容所有类型,所以:

let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

记住:()是c语言,<>是typescript

还有一种写法:

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

关于tuple+联合类型

需求:表示一个只有两个元素,且一个字符串一个数字的数组(特定元素数量和类型)

let x: [string, number];

我们也叫他tuple,其实它叫什么无所谓,重要的是:

  • 元素数量固定

  • 元素类型确定

// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error

你说是数量固定的,我非要越界呢?

不得不说,很无语的设计,越界之后就是联合类型

x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型

越界了,但是没报错。其实只要你后面只放string和number类型都没错,因为越界之后变类型。变成联合类型喽!


Sike
272 声望18 粉丝